package com.wbz.behavioral.strategy.client;

import com.wbz.behavioral.strategy.context.StrategyOrderContext;
import com.wbz.behavioral.strategy.strategy.impl.FixedAmountDiscountStrategy;
import com.wbz.behavioral.strategy.strategy.impl.NoDiscountStrategy;
import com.wbz.behavioral.strategy.strategy.impl.PercentageDiscountStrategy;

/**
 * 客户端代码
 */
public class StrategyClient {
    public static void main(String[] args) {
        // 创建上下文对象
        StrategyOrderContext context = new StrategyOrderContext(new NoDiscountStrategy());

        // 原价
        double originalPrice = 100.0;

        // 计算无折扣的价格
        double finalPrice = context.calculateFinalPrice(originalPrice);
        System.out.println("无折扣价格: " + finalPrice);

        // 更改策略为固定金额折扣
        context.setStrategy(new FixedAmountDiscountStrategy(20.0));
        finalPrice = context.calculateFinalPrice(originalPrice);
        System.out.println("固定金额折扣价格: " + finalPrice);

        // 更改策略为百分比折扣
        context.setStrategy(new PercentageDiscountStrategy(10.0));
        finalPrice = context.calculateFinalPrice(originalPrice);
        System.out.println("百分比折扣价格: " + finalPrice);
    }
}
